<?php
// +----------------------------------------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK ]
// +----------------------------------------------------------------------
// | Copyright (c) 2006-2016 http://thinkphp.cn All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: 流年 <liu21st@gmail.com>
// +----------------------------------------------------------------------

// 应用公共文件

use think\Request;
use think\Log;
/**
 * @desc 逻辑层返回给控制器层
 * @param $code
 * @param $msg
 * @param null $data
 * @return mixed
 */
function call($code,$msg,$data=null){
    
    $rt =[];
    $rt['code']=$code;
    $rt['msg']=$msg;
    $rt['data']=$data;
   
    return $rt;
}

/**
 * logic 成功返回
 * @param null $data
 */
function callsuccess($data=null){
    
    return call(true,'logic success',$data);
}

/**
 * logic 错误返回
 * @param string $msg
 */
function callerror($msg='失败了哦！'){
    return call(false,$msg);
}


/**
 * api 返回
 * @param $code
 * @param $msg
 * @param null $data
 */
function api($code,$msg,$data=null){
    header('Content-type: application/json');
    
    $rt['code']=$code;
    $rt['msg']=$msg;
    $rt['data']=$data;
    echo json_encode($rt);
    die;
}

/**
 * api 成功返回
 * @param null $data
 */
function success($data=null){
    
    api(1,'success',$data);
}

/**
 * api 错误返回
 * @param string $msg
 */
function error($msg='失败了哦！'){
    api(0,$msg);
}



//获取客户端ip
function getIP(){
    global $ip;
    if (getenv("HTTP_CLIENT_IP"))
        $ip = getenv("HTTP_CLIENT_IP");
    else if(getenv("HTTP_X_FORWARDED_FOR"))
        $ip = getenv("HTTP_X_FORWARDED_FOR");
    else if(getenv("REMOTE_ADDR"))
        $ip = getenv("REMOTE_ADDR");
    else $ip = "Unknow IP";
    return $ip;
}


function paramForm($name=null,$required=false,$default=null){
    
    $params =[];
    $params = Request::instance()->param();

//    extract($params);//获取变量

    foreach ($params as $key=>$param){
    
        if($param===''){
//            $params[$key] = null;
            unset($params[$key]);
        }
    }
    if($name==null){
        return $params;
    }
    
    
    if(isset($params[$name])){
        return $params[$name];
    }
    
    if($required){
        if(Request::instance()->isAjax()){
            error($name.'变量必传');
        }else{
            abort(500, $name.'变量必传');
        }
        
    }
    
    return null;
}

//
///**
// * @desc 如果取不到值就返回null
// * @param null $name
// * @param bool $required
// * @param null $default
// * @return array|mixed|null
// */
//function paramFormGet($name=null,$required=false,$default=null){
//
//    $params =[];
//    $params = Request::instance()->param();
//
////    extract($params);//获取变量
//
//    if($name==null){
//        return $params;
//    }
//
//    if(isset($params[$name])){
//        return $params[$name];
//    }
//
//    if($required){
//        if(Request::instance()->isAjax()){
//            error('指定变量不存在');
//        }else{
//            abort(500, '指定变量不存在');
//        }
//
//    }
//
//    return null;
//}
//
//function paramFormPost($name=null,$required=false,$default=null){
//
//    $params =[];
//    $params = Request::instance()->param();
////    extract($params);//获取变量
//
//    if($name==null){
//        return $params;
//    }
//
//    if(isset($params[$name])){
//        return $params[$name];
//    }
//
//    if($required){
//        if(Request::instance()->isAjax()){
//            error('指定变量不存在');
//        }else{
//            abort(500, '指定变量不存在');
//        }
//    }
//
//    return null;
//}


function array2object($array) {
    if (is_array($array)) {
        $obj = new StdClass();
        foreach ($array as $key => $val){
            $obj->$key = $val;
        }
    }
    else { $obj = $array; }
    return $obj;
}

function object2array($object) {
    if (is_object($object)) {
        foreach ($object as $key => $value) {
            $array[$key] = $value;
        }
    }
    else {
        $array = $object;
    }
    return $array;
}

function gmt_iso8601($time) {
    $dtStr = date("c", $time);
    $mydatetime = new DateTime($dtStr);
    $expiration = $mydatetime->format(DateTime::ISO8601);
    $pos = strpos($expiration, '+');
    $expiration = substr($expiration, 0, $pos);
    return $expiration."Z";
}


/**
 * @name randString
 * @param int $len
 * @desc 生成验证码
 * @return bool|string
 */
function randString($len = 6)
{
    $chars = str_repeat('0123456789', 3);
    // 位数过长重复字符串一定次数
    $chars = str_repeat($chars, $len);
    $chars = str_shuffle($chars);
    $str = substr($chars, 0, $len);
    return $str;
}


/**
 * @param string $parameter
 * @return string
 */

function create_guid($parameter = '')
{
    mt_srand((double) microtime() * 1000000);
    
    return date('Ymd') . str_pad(mt_rand(1, 9999999), 22, '0', STR_PAD_LEFT);
}

/**
 * @param $kb
 * @return float|int
 * @desc 文件大小转换成M
 */
function getFileSize($kb){
    $rt = floor($kb/(1024*1024));
    if($rt<0){
        $rt =0;
    }
    return $rt;
}

/**
 * @desc 检测参数不为空，且不为空字符串或者0
 * @param $value
 * @return bool
 */
function isValid($value){
    
    if(!isset($value)){
        return false;
    }
    if($value==''){
        return false;
    }
    if($value==0){
        return false;
    }
    
    return true;
}


function getTimeAttr($value)
{
    /**
     *      把秒数转换为时分秒的格式
     *      @param Int $times 时间，单位 秒
     *      @return String
     */
    
    $result = '00:00:00';
    if ($value>0) {
        $hour = floor($value/3600);
        $minute = floor(($value-3600 * $hour)/60);
        $second = floor((($value-3600 * $hour) - 60 * $minute) % 60);
        $result = $hour.':'.$minute.':'.$second;
    }
    return $result;
    
}

function translateOssImg($imgUrl=null,$width=100,$height=100){
    if($imgUrl){
        return $imgUrl.'?x-oss-process=image/resize,m_pad,color_FFFFFF,w_'.$width.',h_'.$height.',limit_0/auto-orient,1/quality,Q_90/format,jpg';
//        return $imgUrl.'?x-oss-process=image/resize,m_fill,w_'.$width.',h_'.$height.',limit_0/auto-orient,1/quality,Q_90/format,jpg';
    }
}


/**
 * 验证手机号是否正确
 * @author honfei
 * @param number $mobile
 */
function isMobile($mobile) {
    if (!is_numeric($mobile)) {
        return false;
    }
    return preg_match('#^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$#', $mobile) ? true : false;
}




/**
 * Generates an UUID
 *
 * @author     Anis uddin Ahmad
 * @param      string  an optional prefix
 * @return     string  the formatted uuid
 */
function uuid($prefix = '')
{
    $chars = md5(uniqid(mt_rand(), true));
    $uuid  = substr($chars,0,8) . '-';
    $uuid .= substr($chars,8,4) . '-';
    $uuid .= substr($chars,12,4) . '-';
    $uuid .= substr($chars,16,4) . '-';
    $uuid .= substr($chars,20,12);
    return $prefix . $uuid;
}


/**
 * @desc 二维数组去掉重复值
 * @param $array2D
 * @return array
 *
 */
//function array_unique_fb($array2D){
//    echo '<pre>';
//    var_dump($array2D);
//    foreach ($array2D as $v){
//        $v=join(',',$v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
//        $temp[]=$v;
//    }
//    var_dump($temp);die;
//    $temp=array_unique($temp); //去掉重复的字符串,也就是重复的一维数组
//    foreach ($temp as $k => $v){
//        $temp[$k]=explode(',',$v); //再将拆开的数组重新组装
//    }
//    return $temp;
//}


/**
 * 二维数组根据字段进行排序
 * @params array $array 需要排序的数组
 * @params string $field 排序的字段
 * @params string $sort 排序顺序标志 SORT_DESC 降序；SORT_ASC 升序
 */
function arraySequence($array, $field, $sort = 'SORT_ASC')
{
    $arrSort = array();
    foreach ($array as $uniqid => $row) {
        foreach ($row as $key => $value) {
            $arrSort[$key][$uniqid] = $value;
        }
    }
    array_multisort($arrSort[$field], constant($sort), $array);
    return $array;
}


/*
* 定义文件路径，写入图片流
*/
function saveFile($filename, $filecontent){
    $upload_dir = "./upload/media/".date("Ymd");//保存路径，以时间作目录分层
    $mkpath = $upload_dir;
    Log::info($filecontent);
    if(!is_dir($mkpath)){
        if(!mkdir($mkpath)){
            die('no mkdir power');
        }
        if(!chmod($mkpath,0755)){//若服务器在阿里云上不建议使用0644
            die('no chmod power');
        }
    }
    $savepath = $upload_dir.'/'.$filename;
    if(file_put_contents($savepath, $filecontent)){//写入图片流生成图片
        return $upload_dir."/".$filename;//返回图片路径
    }else{
        die('save failed');
    }
    
}